home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / complib / cunmlq.z / cunmlq
Text File  |  1998-10-30  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. CCCCUUUUNNNNMMMMLLLLQQQQ((((3333FFFF))))                                                          CCCCUUUUNNNNMMMMLLLLQQQQ((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CUNMLQ - overwrite the general complex M-by-N matrix C with   SIDE = 'L'
  10.      SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
  14.                         LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS
  17.  
  18.          INTEGER        INFO, K, LDA, LDC, LWORK, M, N
  19.  
  20.          COMPLEX        A( LDA, * ), C( LDC, * ), TAU( * ), WORK( LWORK )
  21.  
  22. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  23.      CUNMLQ overwrites the general complex M-by-N matrix C with TRANS = 'C':
  24.      Q**H * C       C * Q**H
  25.  
  26.      where Q is a complex unitary matrix defined as the product of k
  27.      elementary reflectors
  28.  
  29.            Q = H(k)' . . . H(2)' H(1)'
  30.  
  31.      as returned by CGELQF. Q is of order M if SIDE = 'L' and of order N if
  32.      SIDE = 'R'.
  33.  
  34.  
  35. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  36.      SIDE    (input) CHARACTER*1
  37.              = 'L': apply Q or Q**H from the Left;
  38.              = 'R': apply Q or Q**H from the Right.
  39.  
  40.      TRANS   (input) CHARACTER*1
  41.              = 'N':  No transpose, apply Q;
  42.              = 'C':  Conjugate transpose, apply Q**H.
  43.  
  44.      M       (input) INTEGER
  45.              The number of rows of the matrix C. M >= 0.
  46.  
  47.      N       (input) INTEGER
  48.              The number of columns of the matrix C. N >= 0.
  49.  
  50.      K       (input) INTEGER
  51.              The number of elementary reflectors whose product defines the
  52.              matrix Q.  If SIDE = 'L', M >= K >= 0; if SIDE = 'R', N >= K >=
  53.              0.
  54.  
  55.      A       (input) COMPLEX array, dimension
  56.              (LDA,M) if SIDE = 'L', (LDA,N) if SIDE = 'R' The i-th row must
  57.              contain the vector which defines the elementary reflector H(i),
  58.              for i = 1,2,...,k, as returned by CGELQF in the first k rows of
  59.              its array argument A.  A is modified by the routine but restored
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCUUUUNNNNMMMMLLLLQQQQ((((3333FFFF))))                                                          CCCCUUUUNNNNMMMMLLLLQQQQ((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              on exit.
  75.  
  76.      LDA     (input) INTEGER
  77.              The leading dimension of the array A. LDA >= max(1,K).
  78.  
  79.      TAU     (input) COMPLEX array, dimension (K)
  80.              TAU(i) must contain the scalar factor of the elementary reflector
  81.              H(i), as returned by CGELQF.
  82.  
  83.      C       (input/output) COMPLEX array, dimension (LDC,N)
  84.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  85.              or Q**H*C or C*Q**H or C*Q.
  86.  
  87.      LDC     (input) INTEGER
  88.              The leading dimension of the array C. LDC >= max(1,M).
  89.  
  90.      WORK    (workspace/output) COMPLEX array, dimension (LWORK)
  91.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  92.  
  93.      LWORK   (input) INTEGER
  94.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  95.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  96.              performance LWORK >= N*NB if SIDE 'L', and LWORK >= M*NB if SIDE
  97.              = 'R', where NB is the optimal blocksize.
  98.  
  99.      INFO    (output) INTEGER
  100.              = 0:  successful exit
  101.              < 0:  if INFO = -i, the i-th argument had an illegal value
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.